package oj;

import java.util.HashMap;
import java.util.Map;

public class LC525 {
    public int findMaxLength(int[] nums) {
        int n=nums.length;
        int ans=0;
        int[] arr=new int[n+1];
        for(int i=1;i<=n;i++){
            arr[i]=arr[i-1]+(nums[i-1]==0?-1:1);
        }
        Map<Integer,Integer> map=new HashMap<>();
        for(int i=2;i<=n;i++){
            if(!map.containsKey(arr[i-2])){
                map.put(arr[i-2],i-2);
            }
            if(map.containsKey(arr[i])){
                ans=Math.max(ans,i-map.get(arr[i]));
            }
        }
        return ans;
    }
}
